Unified Parallel C (UPC) | |
---|---|
Парадигма | Паралельна, імперативна (процедурна), структурна |
Дата появи | 1999 |
Творці | UPC Consortium |
Останній реліз | 2.12.2/2011-5-18 |
Система типізації | Статична |
Основні реалізації | GNU UPC, IBM XL UPC Compilers, HP UPC, Berkeley UPC, Michigan Tech MuPC, Cray UPC |
Під впливом від | C, AC,Split-C, Parallel C Preprocessor |
Операційна система | Крос-платформена |
Вебсайт | upc.gwu.edu |
Unified Parallel C (UPC) - розширення мови програмування С, призначене для високопродуктивних обчислень на масштабних паралельних комп'ютерах, в тому числі на SMP/NUMA системах з загальною пам'яттю (єдиним адресним простором) і з розподіленою пам'яттю (наприклад, на кластерах). Програмісту надається доступ до всього глобального розділеного адресного простору (PGAS), збережені в ньому змінні можуть читатися і змінюватися будь-яким процесором. При цьому кожне значення зберігається у фізичній пам'яті одного з процесорів. UPC використовує модель SPMD (Single Program Multiple Data) в якій ступінь паралелізму фіксується при запуску програми, зазвичай на рівні один потік виконання на ядро процесора.
Для вираження паралелізму UPC додає до ISO C 99 конструкції:
На UPC значно вплинули три більш ранніх паралельних розширення: ISO C 99: AC, Split-C[en], і Parallel C Preprocessor (PCP). UPC не є їхньою надбудовою, а скоріше спробою об'єднати кращі їх сторони. UPC комбінує зручність програмування в парадигмі загальної пам'яті, рівень контролю за розподілом даних і продуктивності парадигми передачі повідомлень. Підтримується на різних HPC платформах.
UPC доволі простий в програмуванні, особливо для С-програмістів та порівнянні с іншими парадигмами паралельного програмування (MPI, Charm++). Продуктивність UPC схожа з MPI.
Вручну оптимізований код с блоковими пересилками даних, все ж значно простіше, ніж MPI. Мова і середовище виконання (runtime) беруть на себе рутинну роботу по комунікації.